#pragma once

#include "type.h"

namespace RenderSystem
{
	class Resource;

	class ResManager
	{
	public:

		typedef std::vector<Resource*>		Resources;
		typedef Resources::iterator			ResourcesIterator;
		typedef Resources::const_iterator	ResourcesConstIterator;

		ResManager( const String& strResType );
		virtual ~ResManager(void);

		virtual const String& GetResType( void ) const = 0;
		virtual Resource* Create( const String& strResId );

		virtual Resource* FindResource( const String& strResId ) const;


	protected:

		virtual Resource* _CreateImp( const String& strResId ) = 0;

	protected:

		String				m_strResType;
		Resources			m_Resources;
	};
}